package dto

import (
	"cgs-server/server/model"
	"go.mongodb.org/mongo-driver/bson/primitive"
)

// App 应用
type App struct {
	Id            primitive.ObjectID `json:"id" bson:"ID"`                       // 主键
	Title         string             `json:"title" bson:"Title"`                 // 大屏标题
	BackgroundUrl string             `json:"backgroundUrl" bson:"BackgroundUrl"` // 大屏背景
	Category      *int32             `json:"category" bson:"Category"`           // 大屏类型，这里不知道blade为什么不用分类ID
	OrgCategory   *int32             `json:"orgCategory" bson:"orgCategory"`
	Password      *string            `json:"password" bson:"password"` // 发布密码
	Theme         *string            `json:"theme" bson:"theme"`       // 主题
	Icon          *string            `json:"icon" bson:"icon"`         // 应用图标

	Status *int32 `json:"status" bson:"Status"` // 状态

	// ProjectId 工程 id
	ProjectId string `json:"projectID,omitempty" bson:"projectID,omitempty"`

	SceneId string `json:"sceneID,omitempty" bson:"-"`

	WorksheetGroupIds *[]string `json:"worksheetGroupIds" bson:"worksheetGroupIds"`

	model.TenantModel `json:",inline" bson:",inline"`
}

func (v *App) SetId(id primitive.ObjectID) {
	v.Id = id
}

func (v *App) GetId() string {
	return v.Id.Hex()
}

// Config 配置
type Config struct {
	ID        primitive.ObjectID `json:"id" bson:"ID"` // 主键
	IdObjID   primitive.ObjectID `json:"-" bson:"-"`
	VisualId  primitive.ObjectID `json:"visualId" bson:"VisualId"`   // 可视化表主键
	Detail    string             `json:"detail" bson:"Detail"`       // 配置 json
	Component string             `json:"component" bson:"Component"` // 组件 json
	SceneUrl  string             `json:"sceneUrl" bson:"SceneUrl"`   // 场景地址

	// AutoTrigger 是否在表单更新时自动触发工作流
	AutoTrigger *bool `json:"autoTrigger" bson:"autoTrigger"`

	VisualType string `json:"visualType" bson:"-"`

	RequestData string `json:"requestData" bson:"requestData"` // 工作流

	model.TenantModel `json:",inline" bson:",inline"`
}

func (c *Config) SetId(id primitive.ObjectID) {
	c.ID = id
}
func (c *Config) GetId() string {
	return c.ID.Hex()
}
